perm filename TVSER.SAI[SYS,HE] blob sn#067953 filedate 1973-10-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	⊃ Needs the following to be declared or defined:
C00005 00003	PROCEDURE SETWINDOW
C00007 ENDMK
C⊗;
⊃ Needs the following to be declared or defined:
  INTEGER EXFLAG,MINI,MAXI  INTEGER ARRAY HIST[-1:16]  DEFINE WINDOW,CRLF,⊃;

PROCEDURE INPUT; 
  BEGIN "INPUT"
	EXTERNAL PROCEDURE TVIN;
	EXTERNAL INTEGER TCLIP,BCLIP,FLINE,LLINE,LSIDE,RSIDE,TVCAM;

    IF ((TVCAM←LOOK_AT[1])≠1)∧(TVCAM≠2) THEN BEGIN
       OUTSTR("INPUT-FAILED: ILLEGAL CAM NO. (TVCAM="&CVS(TVCAM)&")"CRLF);
       EXFLAG←1; RETURN; 		     END;

    IF ((LSIDE←LOOK_AT[2]-(LOOK_AT[4] DIV 2))<1)∨
       ((RSIDE←LSIDE+LOOK_AT[4]-1)>330)∨(RSIDE≤LSIDE)∨
       ((FLINE←LOOK_AT[3]-(LOOK_AT[5] DIV 2))<1)∨
       ((LLINE←FLINE+LOOK_AT[5]-1)>250)∨(LLINE≤FLINE)
    THEN BEGIN OUTSTR("INPUT-FAILED: ILLEGAL WINDOW"CRLF);
	       EXFLAG←1; RETURN; END;

    IF ((BCLIP←LOOK_AT[7])<0)∨(BCLIP>7)∨((TCLIP←LOOK_AT[6])<0)∨
       (TCLIP>7)∨(TCLIP>BCLIP) THEN BEGIN
       OUTSTR("INPUT-FAILED: ILLEGAL CLIPS (TCLIP="&CVS(TCLIP)&
              "  BCLIP="&CVS(BCLIP)&")"CRLF);  EXFLAG←1; RETURN; END;

        TVIN;
  END "INPUT";

PROCEDURE HISTO;
  BEGIN INTEGER I,X,Y;
    EXTERNAL INTEGER PROCEDURE GETPNT(INTEGER X,Y);

    ⊃ Compute the histogram;
    FOR I←0 STEP 1 UNTIL 15 DO HIST[I]←0;
    FOR WINDOW DO BEGIN
    I←GETPNT(X,Y); HIST[I]←HIST[I]+1; END;

    ⊃ Find boundary levels;
    I←0; WHILE (HIST[I]=0)∧(I<15) DO I←I+1; MINI←I;
    I←15; WHILE (HIST[I]=0)∧(I>0)  DO I←I-1; MAXI←I;
    IF DEB_EYE THEN OUTSTR("HISTO: MINI="&CVS(MINI)&"  MAXI="&CVS(MAXI)CRLF);
  END "HISTO";

SIMPLE PROCEDURE SETCLIP;
  BEGIN INTEGER X,Y;
    LOOK_AT[6]←0; LOOK_AT[7]←7; INPUT; IF EXFLAG≠0 THEN RETURN; HISTO;
    LOOK_AT[6]←(15-MAXI) DIV 2; LOOK_AT[7]←(15-MINI) DIV 2
  END"SETCLIP";
PROCEDURE SETWINDOW;
  BEGIN INTEGER XPOT,YPOT,MAN,FLAG;
    LABEL WOD;
    EXTERNAL INTEGER PROCEDURE POTABS(INTEGER CHAN;REFERENCE INTEGER FLAGO);
    LOOK_AT[6]←0; LOOK_AT[7]←7;
  WOD: OUTSTR("...TYPE CAMERA NO.="CRLF); LOOK_AT[1]←CVD(INCHWL);
    OUTSTR("...TYPE WIDTH OF WINDOW="CRLF); LOOK_AT[4]←CVD(INCHWL);
    OUTSTR("...TYPE HIGHT OF WINDOW="CRLF); LOOK_AT[5]←CVD(INCHWL);
    OUTSTR("...TYPE Y TO SET CENTER OF WINDOW FROM POTBOX:"CRLF);
    IF YES THEN BEGIN MAN←1;
    OUTSTR("...CHANGE POTS 12 AND 13 TO MOVE THE WINDOW ..."CRLF); END
         ELSE BEGIN MAN←0;
    OUTSTR("...TYPE X COORDINATE OF WINDOW CENTER="CRLF);
    LOOK_AT[2]←CVD(INCHWL);
    OUTSTR("...TYPE Y COORDINATE OF WINDOW CENTER="CRLF);
    LOOK_AT[3]←CVD(INCHWL); END;
    OUTSTR("...TYPE Y WHEN DONE,OR R TO RESTART:"CRLF);
    FLAG←1;
    WHILE FLAG DO BEGIN IF INCHSL(FLAG)="R" THEN GOTO WOD;
    IF MAN=1 THEN BEGIN
        XPOT←POTABS(1,DUMMY);
	YPOT←POTABS(2,DUMMY);
	LOOK_AT[2]←167+XPOT/13; LOOK_AT[3]←125+YPOT/17; END;
  	INPUT; IF EXFLAG≠0 THEN BEGIN EXFLAG←0; GOTO WOD; END;
      END; 
    CLRBUF;
END "SETWINDOW";